Image-editing applications provide various image editing functions to modify, enhance, correct, combine, etc. digital images. These functions are implemented as directly applied brushes, filters, or scripts within the image-editing application. Each such function involves a learning curve for one to understand the results produced by the function and also the effects produced by incremental adjustments to the various parameters of the function. Often a combination of the different parameters and the different functions are needed to produce a desired effect. In many instances, this level of image editing understanding exceeds the common knowledge of ordinary users. For instance, a pixel within a given image can be adjusted in any number of different ways. Red, green, and blue (RGB) channels associated with the pixel provide one means to adjust properties of the pixel, while other attributes such as brightness, hue, saturation, etc. provide several other means to alter the properties of the pixel.
More sophisticated image editing functions attempt to simplify many of the basic adjustments. These and other functions can typically apply effects to individual pixels, apply effects uniformly across an entire image, apply effects uniformly across particular regions of an image, or use various filters/gradients to diffuse the effects across regions of the image or the entire image. However, the effects produced by many of the basic and sophisticated functions often do not produce meaningful results that directly address needs of users. One such function is saturation.
Saturation relates to how the human eye perceives color. Specifically, it relates to a color's purity. A pure color is defined as any combination of two primary colors (i.e., red, green, and blue). A color will lose purity or become desaturated when it is diluted with gray. In the RGB color model, gray contains equal amounts of red, green, and blue. For instance, when the RGB color model spans a range of [0 . . . 255] with 255 representing a maximum intensity of either red, green, or blue, a light gray has RGB values (192, 192, 192) and a dark gray has RGB values (128, 128, 128). Therefore, a light orange color having RGB values (255, 128, 0) will have a 50% reduction in saturation when diluted with a gray having RGB values (128, 128, 128). The resulting desaturated color will have RGB values (192, 128, 64) as illustrated in equation (1) below:(255+128)/2=192(128+128)/2=128(0+128)/2=64  (1)Thus, the more diluted a color becomes, the less saturated the color. An image with higher saturation levels when compared to the same image with lower saturation levels appears more vibrant, whereas the image with less saturation appears washed out or faded.
Prior image-editing applications uniformly increase saturation across an entire image or portions of an image. This static linear increase of saturation levels produces undesirable effects when editing images containing skin tones. Increasing or decreasing the saturation levels for skin tones produces an unnatural appearance. For instance, increasing the saturation levels for skin tones often creates a sun-burnt look while decreasing the saturation levels produces a grayish and equally unnatural looking skin tone. As a result, an incremental increase in the saturation levels causes regions containing skin tones and other easily saturated colors to become over saturated while other regions containing other colors appear remain under saturated.
While it is desirable to increase the saturation of a photograph to bring out the various colors within it, increasing the saturation of skin tones produces an unnatural appearance often creating a sun-burnt look. The saturation functionality and other similar functionality of many existing image-editing applications thus do not provide meaningful effects when applied to photographs.
Therefore, there is a need to provide a simple and efficient image editing function that also produces a meaningful saturation adjustment within an image containing skin tones. There is a need for the function to produce an effect that is applied uniformly (i.e., linearly) to particular regions of the image, while applied non-uniformly (i.e., non-linearly) to other regions in order to produce the meaningful saturation adjustment. Thus, for a digital image containing skin tones, there is a need to differentiate and saturate the non-skin tone regions according to a first set of criteria, while differentiating and saturating the skin-tone regions according to a second set of criteria. Such a function should unevenly distribute the effects of the saturation function in a manner that affects regions more closely related to skin tones less than regions that are less closely related to skin tones.